package com.exam.service;

import com.exam.po.*;

import java.util.List;

/**
 * @author XueWanglin
 * @ClassName StudentService
 * @Description TODO
 * @Date 2021/1/11 20:19
 * @Version 1.0
 */
public interface StudentService {
    /**
     * 根据学生id页码和页面数据容量来查询成绩列表
     * @param page 页码
     * @param pagesize 页面数据容量
     * @param studentId 学生id
     * @return 成绩列表
     */
    List<Score> getScoresByStudentId(Integer page, Integer pagesize, Integer studentId);

    /**
     * 根据学生id来修改密码
     * @param student 只包含学生id和新密码的实体
     * @return 返回是否成功
     */
    boolean updatePwdByStudentId(Student student);

    /**
     * 分页查询小论坛
     * @param page 页码
     * @param pagesize 每页数据容量
     * @return
     */
    List getMessagesList(Integer page, Integer pagesize);

    /**
     * 添加回复
     * @param replay 回复实体
     * @return 是否成功
     */
    Boolean addReplay(Replay replay);

    /**
     * 分页查询考试数据
     * @param page 要查询的页码
     * @param pagesize 每页数据容量
     * @return 考试数据列表
     */
    List<ExamMessage> getExams(Integer page, Integer pagesize);

    /**
     * 通过关键字查询考试信息
     * @param source 关键字
     * @return 考试信息
     */
    List<ExamMessage> getOneExamByKey(String source);

    /**
     * 添加小论坛信息
     * @param message message实体对象
     * @return 是否成功
     */
    Boolean insertNewMessage(Message message);

    /**
     * 通过examCode查询考试详细信息
     * @param examCode 要查询的考试编号
     * @return
     */
    ExamMessage getOneExamMessageByExamCode(Integer examCode);

    /**
     * 通过paperId获取试卷详细内容
     * @param paperId 要获取的试卷Id
     * @return 试卷内容集合
     */
    List<List<PaperMessage>> getPaperAndQueByPaperId(Integer paperId);

    /**
     * 获取考试数目
     * @return
     */
    int getExamsCount();

    /**
     * 获取论坛讨论数目
     * @return
     */
    int getMessagesCount();

    /**
     * 获取分数数目
     * @return
     */
    int getScoresCountById(Integer studentId);

    /**
     * 学生提出异议
     * @return 是否成功
     */
    Boolean updateScoreStatusByScoreId(Score score);

    /**
     * 提交新的考试成绩
     * @param score 成绩实体
     * @return 是否成功
     */
    Boolean insertNewTestResult(Score score);

    /**
     * 模糊查询结果数
     * @param source 关键字
     * @return
     */
    int getExamsCountByKey(String source);
}
